package com.warm.base.design.b_Interpreter;

import java.util.ArrayList;
import java.util.List;

/**
 * @Date: 2019/11/27 15:52
 * @Author: LChuang
 * @Description: 解释器
 *
 *      给定一个语言，定义它的一种表示，并定义一个解释器，这个解释器使用该表示来解释语言中的句子。
 */
public class Client {

    /**
     * Context是环境角色，包含解释器之外的一些全局信息；
     * AbstractExpression为抽象表达式，声明一个抽象的解释操作，这个接口为抽象语法树中所有的节点所共享；
     * TerminalExression为终结符表达式，实现与文法中的终结符相关联的解释操作；
     * NonterminalExpression为非终结符表达式，为文法中的非终结符实现解释操作
     */
    public static void main(String[] args) {
        Context context = new Context();
        List<AbstractExpression> list = new ArrayList<>();
        list.add(new TerminalExpression());
        list.add(new NontermianlExpression());
        for (AbstractExpression expression : list){
            expression.interpret(context);
        }
    }
}
